package com.concurrency.example.singleton;

/**
 * 懒汉模式（双重锁同步锁单例模式）
 * 单例实例在第一次使用的时候进行创建，这个类是线程安全的
 */
public class SingletonExample4 {
    private SingletonExample4(){}

    //单例对象 volatile 来禁止指令重排
    private volatile static SingletonExample4 instance = null;

    public SingletonExample4 getInstance(){
        if (instance == null){
            synchronized(SingletonExample4.class){
                if (instance == null){
                    instance = new SingletonExample4();
                }
            }
        }
        return instance;
    }
}
